home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_10_01 / cmenu.exe / SAGA.TXT < prev   
Text File  |  1991-12-18  |  3KB  |  53 lines

  1. ========================================================================
  2. This file contains a correction to the Illustrated C column that appears
  3. in the January 1992 issue of CUJ. The section titled "The Saga of
  4. Pathname Delimiters" contained some out-of-date information. This is the
  5. text which should have appeared in that section. -lz
  6. ========================================================================
  7.  
  8.  
  9. The Saga of Pathname Delimiters
  10. -------------------------------
  11.  
  12. Even after years of programming in C under DOS, I still occasionally
  13. forget double up the backslashes in pathname strings. For example, I
  14. may have a statement at the top of my C program that looks something
  15. like:
  16.  
  17. #define PATH "c:\foo\bar"
  18.  
  19. The compiler sees a string containing c:, a formfeed, oo, a
  20. backspace, and ar. This is clearly not the intended result.  What I
  21. really meant to write was:
  22.  
  23. #define PATH "c:\\foo\\bar"
  24.  
  25. This kind of goof draws no compilation errors; often, it isn't until
  26. after I've become thoroughly confused and fired up the debugger that
  27. I find the error. To allow the use of the single backslash character
  28. in CMENU source files and avoid the need for the double-backslash
  29. notation, I decided that the backslash character would not have any
  30. special meaning in the CMENU specification language.  As described
  31. above in the section on strings, there is no notation for escape
  32. sequences and single backslashes in pathnames are taken literally.
  33.  
  34. While DOS uses the backslash (\) to delimit subdirectories in
  35. pathnames, UNIX-like systems use the forward slash (/). The CMENU
  36. language supports the use of the forward slash (/) to delimit
  37. pathnames under DOS, as well.  The rmenu program processes all DOS
  38. pathname strings through a function named trans_slash() (Listing
  39. 8.11, lines 94-112) to convert forward slashes into backslashes. This
  40. reduces the amount of revision required to move a CMENU specification
  41. between DOS and UNIX systems.
  42.  
  43. To allow the forward slash character to appear in system commands
  44. (for example, as part of an option string to a DOS application
  45. program), action text is not processed by trans_slash(). A pathname
  46. written with forward slashes acceptable in a DOS path statement, but
  47. will not work in a DOS action clause. 
  48.  
  49. The net result of all this is the following rule of thumb: under DOS,
  50. to be absolutely safe always use backslashes. If you prefer to use
  51. forward-slashes, then use them only in path clauses, never in an
  52. action clause.
  53.